<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //一.一切皆对象。
    //1.函数对象，数组对象，自定义对象
    //2.字符串，数字，布尔值是包装对象。
    //3.null空对象 
    //4.undefined:undefined和null的值是相等的。企业级语言里面的null和undefined是一回事。
    // console.log(null == undefined); //true
    // console.log(null === undefined); //false

    //二.字符串，数字，布尔值是包装对象。
    //1.包装对象的特点就是临时性??
    // var str1 = 'hello';
    // var str2 = new String('hello'); //String:类  str2:实例对象
    // console.log(str1 == str2); //true
    // console.log(str1 === str2); //false
    // console.log(typeof str1); //string
    // console.log(typeof str2); //object

    //2.字符串，数字，布尔值是基本类型，为什么基本类型拥有属性和方法???

    // var str3 = 'javascript';
    // console.log(str3.length); //10

    // var arr = ['a', 'b', 'c', 'd'];
    // console.log(arr.length); //4



    // var arr = ['a', 'b', 'c', 'd'];
    // arr.length = 2; //数组是真正的对象，不需要包装，直接使用。
    // console.log(arr.length); //2

    // var str3 = 'javascript';
    // str3.length = 5; //系统会临时采用对象的方式创建 var str3 = new String('javascript'),用完即销毁。
    // console.log(str3.length); //10  ?????


    // 3.包装对象的概念：
    // 当要操作字符串、数字、布尔值的属性时,js会在内存中自动创建一个对象,用来对内置类型进行包装，使内置类型暂时拥有普通对象功能，可以存取属性，一旦引用结束，包装对象自动销毁。
</script>